<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   龚得星: recommenderlab 包实现电影评分预测  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
   MathJax.Hub.Config({
          tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},
          TeX: {equationNumbers: {autoNumber: "AMS"}}
        });
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://cos.name/2014/02/recommenderlab-packages/",
                  host: "http://cos.name",
                  prePath: "http://cos.name",
                  scheme: "http",
                  pathBase: "http://cos.name/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466440269: Accept with keywords: (title(0.285714285714):预测,评分,门户网站,电影,统计学,服务平台,中国, topn(0.466666666667):软件应用,统计学,R语言,数据挖掘,测试集,数量,函数,协同,模型,电影,中文论坛,参数,计算,文章,时间序列,数据,属性,预测,项目,评分,论坛,用户,算法,随机,可视化,会议,错误,参考资料,评论,归一化).-->
 </head>
 <body class="single single-post postid-9626 single-format-standard sidebar" onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    龚得星: recommenderlab 包实现电影评分预测
   </h1>
  </div>
  <div class="container" id="xmain">
   <div class="hfeed site" id="page">
    <header class="site-header" id="masthead" role="banner">
     <div id="cos-logo">
      <a href="http://cos.name/">
       <img src="http://cos.name/wp-content/themes/COS-kermesinus/images/headers/cos-logo.png"/>
      </a>
     </div>
     <div class="navbar" id="navbar">
      <nav class="navigation main-navigation" id="site-navigation" role="navigation">
       <h3 class="menu-toggle">
        菜单
       </h3>
       <a class="screen-reader-text skip-link" href="http://cos.name/2014/02/recommenderlab-packages/#content" title="跳至内容">
        跳至内容
       </a>
       <div class="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95-container">
        <ul class="nav-menu" id="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4746" id="menu-item-4746">
          <a href="http://cos.name">
           主页
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8120" id="menu-item-8120">
          <a href="http://cos.name/cn">
           论坛
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8124" id="menu-item-8124">
            <a href="http://cos.name/cn/wp-login.php?action=register">
             论坛注册
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8125" id="menu-item-8125">
            <a href="http://cos.name/cn/wp-login.php">
             论坛登录
            </a>
           </li>
          </ul>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8110" id="menu-item-8110">
          <a href="http://cos.name/books/">
           图书资料
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8112" id="menu-item-8112">
          <a href="http://cos.name/videos">
           视频教程
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8333" id="menu-item-8333">
          <a href="http://cos.name/salon/">
           统计沙龙
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8111" id="menu-item-8111">
          <a href="http://cos.name/chinar/">
           R语言会议
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8109" id="menu-item-8109">
          <a href="http://cos.name/training/">
           讲座与培训
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8115" id="menu-item-8115">
          <a href="http://cos.name/cn/forum/comprehensive/job/">
           招聘信息
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4780" id="menu-item-4780">
          <a href="http://cos.name/about">
           关于我们
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8113" id="menu-item-8113">
            <a href="http://cos.name/2008/11/how-to-work-with-cos/">
             加入我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8119" id="menu-item-8119">
            <a href="http://cos.name/donate/">
             赞助我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8114" id="menu-item-8114">
            <a href="http://cos.name/cn/forum/26">
             项目合作
            </a>
           </li>
          </ul>
         </li>
        </ul>
       </div>
       <form action="http://cos.name/" class="search-form" method="get" role="search">
        <label>
         <span class="screen-reader-text">
          搜索：
         </span>
        </label>
       </form>
      </nav>
      <!-- #site-navigation -->
     </div>
     <!-- #navbar -->
    </header>
    <!-- #masthead -->
    <div class="site-main" id="main">
     <div class="content-area" id="primary">
      <div class="site-content" id="content" role="main">
       <article class="post-9626 post type-post status-publish format-standard hentry category-data category-dmml category-packages category-software tag-199 tag-818 tag-816 tag-814 tag-817 tag-815" id="post-9626">
        <header class="entry-header">
         <h1 class="entry-title">
          recommenderlab 包实现电影评分预测
         </h1>
         <div class="entry-meta">
          <span class="date">
           <a href="http://cos.name/2014/02/recommenderlab-packages/" rel="bookmark" title="链向recommenderlab 包实现电影评分预测的固定链接">
            <time class="entry-date" datetime="2014-02-26T13:51:44+00:00">
             2014/02/26
            </time>
           </a>
          </span>
          <span class="categories-links">
           <a href="http://cos.name/category/data/" rel="category tag">
            数据分析
           </a>
           、
           <a href="http://cos.name/category/data/dmml/" rel="category tag">
            数据挖掘与机器学习
           </a>
           、
           <a href="http://cos.name/category/software/packages/" rel="category tag">
            统计软件
           </a>
           、
           <a href="http://cos.name/category/software/" rel="category tag">
            软件应用
           </a>
          </span>
          <span class="tags-links">
           <a href="http://cos.name/tag/%e6%8e%a8%e8%8d%90/" rel="tag">
            推荐
           </a>
           、
           <a href="http://cos.name/tag/%e6%a8%a1%e5%9e%8b/" rel="tag">
            模型
           </a>
           、
           <a href="http://cos.name/tag/%e7%94%b5%e5%bd%b1/" rel="tag">
            电影
           </a>
           、
           <a href="http://cos.name/tag/%e7%ae%97%e6%b3%95/" rel="tag">
            算法
           </a>
           、
           <a href="http://cos.name/tag/%e8%af%84%e5%88%86/" rel="tag">
            评分
           </a>
           、
           <a href="http://cos.name/tag/%e9%a2%84%e6%b5%8b/" rel="tag">
            预测
           </a>
          </span>
          <span class="author vcard">
           <a class="url fn n" href="http://cos.name/author/ifuture2014/" rel="author" title="查看所有由龚 得星发布的文章">
            龚 得星
           </a>
          </span>
         </div>
         <!-- .entry-meta -->
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
         <p align="center" style="text-align: left;">
          <a href="http://cran.r-project.org/web/packages/recommenderlab/index.html">
           recommenderlab
          </a>
          是R语言非常强大的包，能帮助使用者针对评分数据或者0-1(不喜欢/喜欢)二分数据开发和测试推荐算法，本文就是利用该包对于
          <a href="http://grouplens.org/datasets/movielens/">
           movielens
          </a>
          的电影评分数据进行预测和推荐，会对比基于用户的协同过滤和基于项的协同过滤在推荐效果上的差别。
         </p>
         <h3 align="center" style="text-align: left;">
          1 获取电影数据
         </h3>
         <p>
          电影数据来源于
          <a href="http://grouplens.org/datasets/movielens/">
           http://grouplens.org/datasets/movielens/
          </a>
          网站，本文分析的数据是MovieLens 100k，总共有100,000个评分，来自1000位用户对1700部电影的评价。
         </p>
         <h3>
          2 数据准备和清理
         </h3>
         <p>
          设置好工程路径后，可用读入数据，注意数据的格式，第一列是 user id，第二列是 item id，第三列是 rating，第四列是时间戳，时间戳这里用不到，可去掉。
         </p>
         <pre>&gt; ml100k &lt;- read.table("u.data", header = F, stringsAsFactors = T)

&gt; head(ml100k)

   V1  V2 V3        V4

1 196 242  3 881250949

2 186 302  3 891717742

3  22 377  1 878887116

&gt; ml100k &lt;- ml100k[, -4]</pre>
         <p style="padding-left: 30px;">
          可以简单看下 rating 的分布情况
         </p>
         <pre style="padding-left: 30px;">&gt; prop.table(table(ml100k[, 3]))

         1          2          3          4          5

0.06106870 0.12977099 0.41984733 0.32061069 0.06870229

&gt; summary(ml100k[, 3])

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's

  1.000   3.000   3.000   3.206   4.000   5.000     812</pre>
         <p>
          可以看出，3 星和 4 星的数量最多，接近总数的75%，1 星和 5 星的数量最少，和预期的一致。数据格式和我们想要的行为用户，列为项目的 ratingMatrix 还有很大的差距，对此可以使用
          <a href="http://cran.r-project.org/web/packages/reshape/index.html">
           reshape
          </a>
          包的
          <code>
           cast()
          </code>
          进行转换，注意转换后的缺失值默认为NA。
         </p>
         <pre>&gt; library(reshape)

&gt; ml100k &lt;- cast(ml100k, V1 ~ V2, value = "V3")

&gt; ml.useritem[1:3, 1:6]

   1  2  3  4  5  6

1  5  3  4  3  3  5

2  4 NA NA NA NA NA

3 NA NA NA NA NA NA</pre>
         <p>
          到此，把数据整理成 ratingMatrix，接下来利用 recommenderlab 处理数据。
          <br/>
          <span id="more-9626">
          </span>
         </p>
         <h3>
          3 recommenderlab 处理数据
         </h3>
         <p>
          在用 recommenderlab 处理数据之前，需将数据转换为
          <code>
           realRatingMatrix
          </code>
          类型，这是 recommenderlab 包中专门针对 1-5 star 的一个新类，需要从
          <code>
           matrix
          </code>
          转换得到。上文获得的
          <code>
           ml.useritem
          </code>
          有两个类属性，其中
          <code>
           cast_df
          </code>
          是不能直接转换为
          <code>
           matrix
          </code>
          的，因此需要去掉这个类属性，只保留
          <code>
           data.frame
          </code>
         </p>
         <pre>&gt; class(ml.useritem)

[1] "cast_df"    "data.frame"

&gt; class(ml.useritem) &lt;- "data.frame"    ##只保留data.frame的类属性

&gt; ml.useritem &lt;- as.matrix(ml.useritem)

&gt; ml.ratingMatrix &lt;- as(ml.useritem, "realRatingMatrix")  ##转换为realRatingMatrix

&gt; ml.ratingMatrix

943 x 1682 rating matrix of class ‘realRatingMatrix’ with 100000 ratings.</pre>
         <p>
          <code>
           ml.ratingMatrix
          </code>
          是可以用 recommenderlab 进行处理的
          <code>
           realRatingMatrix
          </code>
          ，943是 user 数，1682 指的是 item 数,
          <code>
           realRatingMatrix
          </code>
          可以很方便地转换为
          <code>
           matrix
          </code>
          和
          <code>
           list
          </code>
         </p>
         <pre>&gt; as(ml.ratingMatrix , "matrix")[1:3, 1:10]

   1  2  3  4  5  6  7  8  9 10

1  5  3  4  3  3  5  4  1  5  3

2  4 NA NA NA NA NA NA NA NA  2

3 NA NA NA NA NA NA NA NA NA NA

&gt; as(ml.ratingMatrix , "list")[[1]][1:10]

 1  2  3  4  5  6  7  8  9 10

 5  3  4  3  3  5  4  1  5  3</pre>
         <p>
          另外，recommenderlab 包中有提供用于归一化的函数
          <code>
           normalize()
          </code>
          ，默认是均值归一化 x – mean；建立推荐模型的函数，里面有归一化处理的，在此不必单独进行归一化。
         </p>
         <h3>
          4 recommender 简单介绍
         </h3>
         <p>
          在建模之前可以先看下针对
          <code>
           realRatingMatrix
          </code>
          ，recommederlab 提供了哪些推荐技术——一共有6种，我们会用到其中的三种：random（随机推荐），ubcf（基于用户协同过滤），ibcf（基于项目协同过滤）
         </p>
         <pre>&gt; recommenderRegistry$get_entries(dataType = "realRatingMatrix")

$IBCF_realRatingMatrix

Recommender method: IBCF  ##基于项目协同过滤

Description: Recommender based on item-based collaborative filtering (real data).

Parameters:

   k method normalize normalize_sim_matrix alpha na_as_zero minRating

1 30 Cosine    center                FALSE   0.5      FALSE        NA

$PCA_realRatingMatrix    ##主成份分析

Recommender method: PCA

Description: Recommender based on PCA approximation (real data).

Parameters:

  categories method normalize normalize_sim_matrix alpha na_as_zero minRating

1         20 Cosine    center                FALSE   0.5      FALSE        NA

$POPULAR_realRatingMatrix  ##基于流行度推荐

Recommender method: POPULAR

Description: Recommender based on item popularity (real data).

Parameters: None

$RANDOM_realRatingMatrix   ##随机推荐

Recommender method: RANDOM

Description: Produce random recommendations (real ratings).

Parameters: None

$SVD_realRatingMatrix   ##奇异值分解

Recommender method: SVD

Description: Recommender based on SVD approximation (real data).

Parameters:

  categories method normalize normalize_sim_matrix alpha treat_na minRating

1         50 Cosine    center                FALSE   0.5   median        NA

$UBCF_realRatingMatrix   ##基于用户协同过滤

Recommender method: UBCF

Description: Recommender based on user-based collaborative filtering (real data).

Parameters:

  method nn sample normalize minRating

1 cosine 25  FALSE    center        NA</pre>
         <p>
          以IBCF为例简单介绍参数的含义
         </p>
         <ul>
          <li>
           K：取多少个最相似的 item，默认为30
          </li>
         </ul>
         <ul>
          <li>
           method：相似度算法，默认采用余弦相似算法 cosine
          </li>
         </ul>
         <ul>
          <li>
           Normalize：采用何种归一化算法，默认均值归一化 x – mean
          </li>
         </ul>
         <ul>
          <li>
           normalize_sim_matrix：是否对相似矩阵归一化，默认为否
          </li>
         </ul>
         <ul>
          <li>
           alpha：alpha参数值，默认为0.5
          </li>
         </ul>
         <ul>
          <li>
           na_as_zero：是否将 NA 作为 0，默认为否
          </li>
         </ul>
         <ul>
          <li>
           minRating：最小评分，默认不设置
          </li>
         </ul>
         <p>
          这些参数均可在建立模型时设置，本文全部采用默认参数。
         </p>
         <h3>
          5 建立推荐模型
         </h3>
         <p>
          <code>
           recommender()
          </code>
          是 recommenderlab 包中用于建立模型的函数，用法也相当简单，注意在调用
          <code>
           recommender()
          </code>
          之前需给矩阵的所有列按照
          <code>
           itemlabels
          </code>
          进行列命名。
         </p>
         <pre>&gt; colnames(ml.ratingMatrix) &lt;- paste("M", 1:1682, sep = "")

&gt; as(ml.ratingMatrix[1,1:10], "list")

$`1`

 M1  M2  M3  M4  M5  M6  M7  M8  M9 M10

  5   3   4   3   3   5   4   1   5   3

##【警告】在建立推荐模型之前一定要给item按照itemLabels进行命名，否则会有如下错误

##Error in validObject(.Object) :

##  invalid class “topNList” object: invalid object for slot "itemLabels" in class "topNList": got class "NULL", should be or extend class "character"

&gt; ml.recommModel &lt;- Recommender(ml.ratingMatrix[1:800], method = "IBCF")

&gt; ml.recommModel

Recommender of type ‘POPULAR’ for ‘realRatingMatrix’

learned using 800 users.</pre>
         <p>
          模型建立以后，就可以用来进行预测和推荐了。与其他很多模型类似，我们将使用
          <code>
           predict()
          </code>
          函数，这里分别给801-803三个用户进行推荐。
          <code>
           predict()
          </code>
          函数有一个
          <code>
           type
          </code>
          参数，可用来设置是 Top-N 推荐还是评分预测，默认是 Top-N 推荐。
         </p>
         <pre>##TopN推荐，n = 5 表示Top5推荐

&gt; ml.predict1 &lt;- predict(ml.recommModel, ml.ratingMatrix[801:803], n = 5)

&gt; ml.predict1

Recommendations as ‘topNList’ with n = 5 for 3 users.

&gt; as( ml.predict1, "list")  ##显示三个用户的Top3推荐列表

[[1]]

[1] "M50"  "M100" "M127" "M98"  "M174"

[[2]]

[1] "M50"  "M100" "M127" "M174" "M313"

[[3]]

[1] "M50"  "M100" "M127" "M98"  "M174"

##用户对item的评分预测

&gt; ml.predict2 &lt;- predict(ml.recommModel, ml.ratingMatrix[801:803], type = "ratings")

&gt; ml.predict2

## 查看三个用于对M1-6的预测评分
## 注意：实际的预测评分还要在此基础上加上用户的平均评分

&gt; as(ml.predict2, "matrix")[1:3, 1:6]

           M1         M2        M3          M4         M5        M6

801 0.2909692 -0.2749699 -0.350463 -0.02231146 -0.2300878 0.2049403

802 0.2909692 -0.2749699 -0.350463 -0.02231146 -0.2300878 0.2049403

803 0.2909692 -0.2749699 -0.350463 -0.02231146 -0.2300878 0.2049403</pre>
         <h3>
          6 模型的评估
         </h3>
         <p>
          本文只考虑评分预测模型的评估，对于 Top-N 推荐模型请查看后面的参考资料，对于评分预测模型的评估，最经典的参数是 RMSE（均平方根误差）
         </p>
         <pre>rmse &lt;- function(actuals, predicts)
{
    sqrt(mean((actuals - predicts)^2, na.rm = T))
}</pre>
         <p>
          幸运的是，recommenderlab 包提供了专门的评估方案，对应的函数是
          <code>
           evaluationScheme()
          </code>
          ，能够设置采用 n 折交叉验证还是简单的训练集/测试集分开验证。本文采用后一种方法，即将数据集简单分为训练集和测试集，在训练集训练模型，然后在测试集上评估。
         </p>
         <pre>&gt; model.eval &lt;- evaluationScheme(ml.ratingMatrix[1:943], method = "split",

+ train = 0.9, given = 15, goodRating = 5)

&gt; model.eval

Evaluation scheme with 15 items given

Method: ‘split’ with 1 run(s).

Training set proportion: 0.900

Good ratings: &gt;=5.000000

Data set: 943 x 1682 rating matrix of class ‘realRatingMatrix’ with 100000 ratings.

##分别用RANDOM、UBCF、IBCF建立预测模型

&gt; model.random &lt;- Recommender(getData(model.eval, "train"), method = "RANDOM")

&gt; model.ubcf &lt;- Recommender(getData(model.eval, "train"), method = "UBCF")

&gt; model.ibcf &lt;- Recommender(getData(model.eval, "train"), method = "IBCF")

##分别根据每个模型预测评分

&gt; predict.random &lt;- predict(model.random, getData(model.eval, "known"), type = "ratings")

&gt; predict.ubcf &lt;- predict(model.ubcf, getData(model.eval, "known"), type = "ratings")

&gt; predict.ibcf &lt;- predict(model.ibcf, getData(model.eval, "known"), type = "ratings")</pre>
         <p>
          这里简单介绍，数据集是如何划分的。其实很简单，对于用户没有评分过的项目，是没法进行模型评估的，因为预测值没有参照对象。
          <code>
           getData
          </code>
          的参数
          <code>
           given
          </code>
          便是来设置用于预测的项目数量。
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2014/02/捕获.1JPG.jpg">
           <img src="http://cos.name/wp-content/uploads/2014/02/捕获.1JPG-500x216.jpg"/>
          </a>
          接下来计算 RMSE，对比三个模型的评估参数，
          <code>
           calcPredictionError()
          </code>
          函数可以计算出MAE（绝对值均方误差）、MSE 和 RMSE。
         </p>
         <pre>&gt; error &lt;- rbind(

+ calcPredictionError(predict.random, getData(model.eval, "unknown")),

+ calcPredictionError(predict.ubcf, getData(model.eval, "unknown")),

+ calcPredictionError(predict.ibcf, getData(model.eval, "unknown")))

&gt; rownames(error) &lt;- c("RANDOM", "UBCF", "IBCF")

&gt; error

             MAE      MSE     RMSE

RANDOM 1.7267304 4.486820 2.118211

UBCF   0.8254453 1.062409 1.030732

IBCF   0.8444152 1.333968 1.154976</pre>
         <p>
          为了更好地说明 RMSE 与训练/测试比、
          <code>
           given
          </code>
          等参数的关系，我们可以进行多组的比较。
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2014/02/捕获.jpg">
           <img src="http://cos.name/wp-content/uploads/2014/02/捕获-500x243.jpg"/>
          </a>
          从上面的两张图可以得出如下结论：
         </p>
         <ol>
          <li>
           训练/测试比对 RMSE 没什么影响，并不是训练集比重越大 RMSE 越小，因此在实际过程中可适当降低训练集的比例，减少建立模型所需时间；
          </li>
          <li>
           <code>
            given
           </code>
           值对协同过滤的推荐系统影响很大，
           <code>
            given
           </code>
           越大（用于预测项目数量）RMSE越小，当然这里最大的
           <code>
            given
           </code>
           值为20，在[1, 20]范围内，显然
           <code>
            given = 20
           </code>
           是最优的；
          </li>
          <li>
           基于用户的协同过滤表现好，随机推荐最差，另外，项目的数量超过2倍的用户数，因此无论从降低 RMSE 还是提高模型性能来说，UBCF都是最好的选择。有兴趣的童鞋还可以尝试分析近邻数K、相似度算法和 RMSE 的关系。
          </li>
         </ol>
         <p>
          在《Recommender system handbook》的4.2.5节，很详细对比了 IBCF 和 UBCF，再结合以上的数据，可以很好地理解为什么在这个案例中UBCF要明显优于IBCF。
         </p>
         <h3>
          7 参考资料
         </h3>
         <p>
          [1] Recommender system handbook
         </p>
         <p>
          [2] Item-Based Collaborative Filtering Recommendation Algorithms
         </p>
         <p>
          [3] recommenderlab: A Framework for Developing and Testing Recommendation Algorithms
         </p>
         <p>
          [4]
          <a href="http://cran.r-project.org/package=recommenderlab">
           http://cran.r-project.org/package=recommenderlab
          </a>
         </p>
         <div class="wumii-hook">
          <br/>
          <br/>
         </div>
        </div>
        <!-- .entry-content -->
        <footer class="entry-meta">
        </footer>
        <!-- .entry-meta -->
       </article>
       <!-- #post -->
       <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text">
         文章导航
        </h1>
        <div class="nav-links">
         <a href="http://cos.name/2014/02/svm-series-4-support-vector/" rel="prev">
          <span class="meta-nav">
           ←
          </span>
          支持向量机系列四：Outliers
         </a>
         <a href="http://cos.name/2014/03/svm-series-5-support-vector/" rel="next">
          支持向量机系列五：Numerical Optimization
          <span class="meta-nav">
           →
          </span>
         </a>
        </div>
        <!-- .nav-links -->
       </nav>
       <!-- .navigation -->
       <div class="comments-area" id="comments">
        <h2 class="comments-title">
         《
         <span>
          recommenderlab 包实现电影评分预测
         </span>
         》有7个想法
        </h2>
        <ol class="comment-list">
         <li class="comment even thread-even depth-1" id="comment-5447">
          <article class="comment-body" id="div-comment-5447">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/6e9ba76f7ff9d892c1a93da54f0a325b?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://beader.me" rel="external nofollow">
               beader
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-5447">
              <time datetime="2014-03-15T20:34:12+00:00">
               2014/03/15 20:34
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             请问在第3个代码块中
             <br/>
             &gt; ml100k &lt;- cast(ml100k, V1 ~ V2, value = "V3")
             <br/>
             &gt; ml.useritem[1:3, 1:6]
            </p>
            <p>
             中间是否少了一步：
             <br/>
             ml.useritem &lt;- ml100k[,-1]
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给beader" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=5447#respond" onclick='return addComment.moveForm( "div-comment-5447", "5447", "respond", "9626" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1" id="comment-5451">
          <article class="comment-body" id="div-comment-5451">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://weibo.com/1997763905" rel="external nofollow">
               疯狂的拖鞋
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-5451">
              <time datetime="2014-03-17T01:01:56+00:00">
               2014/03/17 01:01
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             ml100k &lt;- cast(ml100k, V1 ~ V2, value = "V3")
             <br/>
             应该为：
             <br/>
             ml.useritem&lt;- cast(ml100k, V1 ~ V2, value = "V3")
             <br/>
             楼主太厉害了！从读取文件到转换到矩阵，只用了reshape 包的 cast()和as.matrix两个函数轻松搞定，处理得太妙了。这R是用的有多纯熟~
             <br/>
             我看这文章之前，都是把读取到dataframe里的数据一条条读进matrix，读进的时候还要寻找相应的userid和itemid所在的行号和列号……
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给疯狂的拖鞋" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=5451#respond" onclick='return addComment.moveForm( "div-comment-5451", "5451", "respond", "9626" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-5452">
          <article class="comment-body" id="div-comment-5452">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://weibo.com/1997763905" rel="external nofollow">
               疯狂的拖鞋
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-5452">
              <time datetime="2014-03-17T01:21:21+00:00">
               2014/03/17 01:21
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             一楼是对的！二楼错误。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给疯狂的拖鞋" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=5452#respond" onclick='return addComment.moveForm( "div-comment-5452", "5452", "respond", "9626" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1" id="comment-5465">
          <article class="comment-body" id="div-comment-5465">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/60df1a727e9e71d7dab5361dcfde3c4d?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              叽里咕噜
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-5465">
              <time datetime="2014-03-21T10:02:39+00:00">
               2014/03/21 10:02
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             求教
             <br/>
             执行ml.ratingMatrix &lt;- as(ml.useritem, "realRatingMatrix")时出现错误：
             <br/>
             Error in as(ml.useritem, "realRatingMatrix") :
             <br/>
             没有可以用来強制转换“matrix”成“realRatingMatrix”的方法或默认函数
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给叽里咕噜" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=5465#respond" onclick='return addComment.moveForm( "div-comment-5465", "5465", "respond", "9626" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1" id="comment-5466">
          <article class="comment-body" id="div-comment-5466">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://weibo.com/yuanjunbo" rel="external nofollow">
               隽薄
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-5466">
              <time datetime="2014-03-21T15:01:16+00:00">
               2014/03/21 15:01
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             library(recommenderlab)可以解决执行ml.ratingMatrix &lt;- as(ml.useritem, "realRatingMatrix")时出现错误：
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给隽薄" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=5466#respond" onclick='return addComment.moveForm( "div-comment-5466", "5466", "respond", "9626" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1 parent" id="comment-6778">
          <article class="comment-body" id="div-comment-6778">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/e24030662b14bb97d1856b51e33cfdac?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              zhaopei
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-6778">
              <time datetime="2015-07-20T21:21:48+00:00">
               2015/07/20 21:21
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             Q1.执行prop.table(table(ml100k[, 3]))的结果和截图不一样
            </p>
            <p>
             1       2       3       4       5
             <br/>
             0.06110 0.11370 0.27145 0.34174 0.21201
            </p>
            <p>
             Q2.执行&gt; summary(ml100k[, 3])的结果也和截图不一样
             <br/>
             Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
             <br/>
             1.00    3.00    4.00    3.53    4.00    5.00
            </p>
            <p>
             Q3.执行该语句，结果和本文截图不一样，需要把1:6改为1:7，才会出现6列，且V1列是怎么回事呀
             <br/>
             ml.useritem  ml.useritem[1:3, 1:7]#把数据整理成ratingMatrix
             <br/>
             V1  1  2  3  4  5  6
             <br/>
             1  1  5  3  4  3  3  5
             <br/>
             2  2  4 NA NA NA NA NA
             <br/>
             3  3 NA NA NA NA NA NA
            </p>
            <p>
             Q4.在计算RMSE时，calcPredictionError(）函数提示错误
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给zhaopei" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=6778#respond" onclick='return addComment.moveForm( "div-comment-6778", "6778", "respond", "9626" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment even depth-2" id="comment-6918">
            <article class="comment-body" id="div-comment-6918">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/43e7e8320961f962687a498bcac86455?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                supernathan
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2014/02/recommenderlab-packages/#comment-6918">
                <time datetime="2015-10-31T16:36:50+00:00">
                 2015/10/31 16:36
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               函数名变更为calcPredictionAccuracy
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给supernathan" class="comment-reply-link" href="http://cos.name/2014/02/recommenderlab-packages/?replytocom=6918#respond" onclick='return addComment.moveForm( "div-comment-6918", "6918", "respond", "9626" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
        </ol>
        <!-- .comment-list -->
        <div class="comment-respond" id="respond">
         <h3 class="comment-reply-title" id="reply-title">
          发表评论
          <small>
           <a href="http://cos.name/2014/02/recommenderlab-packages/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">
            取消回复
           </a>
          </small>
         </h3>
         <form action="http://cos.name/wp-comments-post.php" class="comment-form" id="commentform" method="post" novalidate="">
          <p class="comment-notes">
           <span id="email-notes">
            电子邮件地址不会被公开。
           </span>
           必填项已用
           <span class="required">
            *
           </span>
           标注
          </p>
          <p class="comment-form-comment">
           <label for="comment">
            评论
           </label>
           <textarea aria-required="true" cols="45" id="comment" maxlength="65525" name="comment" required="required" rows="8">
           </textarea>
          </p>
          <p class="comment-form-author">
           <label for="author">
            姓名
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-email">
           <label for="email">
            电子邮件
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-url">
           <label for="url">
            站点
           </label>
          </p>
          <p class="form-submit">
          </p>
          <p style="display: none;">
          </p>
          <p style="display: none;">
          </p>
         </form>
        </div>
        <!-- #respond -->
       </div>
       <!-- #comments -->
      </div>
      <!-- #content -->
     </div>
     <!-- #primary -->
     <div class="sidebar-container" id="tertiary" role="complementary">
      <div class="sidebar-inner">
       <div class="widget-area">
        <aside class="widget widget_text" id="text-3">
         <h3 class="widget-title">
          关注统计之都
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            新浪微博
            <a href="http://weibo.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            人人网
            <a href="http://renren.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            Twitter
            <a href="http://twitter.com/cos_name">
             @cos_name
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-6">
         <h3 class="widget-title">
          微信公众平台
         </h3>
         <div class="textwidget">
          <img src="http://cos.name/wp-content/uploads/2013/04/qrcode-8cm.jpg"/>
          <p style="font-size:12px;margin-left:15px">
           微信号 CapStat
          </p>
          <p>
           我们将第一时间向您推送主站和论坛的精彩内容，以及统计之都的线下活动、竞赛、培训和会议信息。
          </p>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-8">
         <h3 class="widget-title">
          站内导航
         </h3>
         <div class="textwidget">
          <ul>
           <li class="page_item">
            <a href="http://cos.name/cn/">
             中文论坛
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/videos/">
             视频
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/salon/">
             统计沙龙
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/books/">
             图书出版
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/training/">
             教育培训
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/about/">
             关于我们
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/donate/">
             捐赠
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/chinar/">
             R语言会议
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_links" id="linkcat-2">
         <h3 class="widget-title">
          友情链接
         </h3>
         <ul class="xoxo blogroll">
          <li>
           <a href="http://stat.ruc.edu.cn" target="_blank" title="中国人民大学统计学院网站">
            中国人民大学统计学院
           </a>
          </li>
          <li>
           <a href="http://rucdmc.net">
            中国人民大学数据挖掘中心
           </a>
          </li>
          <li>
           <a href="http://birc.gsm.pku.edu.cn/" target="_blank">
            北京大学商务智能研究中心
           </a>
          </li>
          <li>
           <a href="http://sam.cufe.edu.cn/" target="_blank" title="中央财经大学统计与数学学院网站">
            中央财经大学统计与数学学院
           </a>
          </li>
          <li>
           <a href="http://tjx.cueb.edu.cn/" target="_blank" title="首都经济贸易大学统计学院网站">
            首经贸统计学院
           </a>
          </li>
          <li>
           <a href="http://www.shookr.com/">
            数客网大数据社区
           </a>
          </li>
          <li>
           <a href="http://www.xueqing.tv/" target="_blank" title="数据科学在线学习平台">
            雪晴数据网
           </a>
          </li>
          <li>
           <a href="http://iera.name/" target="_blank" title="IERA是一个旨在普及、传播和增进工业工程知识的非营利性网站">
            IERA（直通IE）
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_categories" id="categories-2">
         <h3 class="widget-title">
          全部分类
         </h3>
         <label class="screen-reader-text" for="cat">
          全部分类
         </label>
         <select class="postform" id="cat" name="cat">
          <option value="-1">
           选择分类目录
          </option>
          <option class="level-0" value="925">
           cos访谈  (4)
          </option>
          <option class="level-0" value="659">
           图书出版  (5)
          </option>
          <option class="level-0" value="379">
           数学方法  (14)
          </option>
          <option class="level-1" value="381">
           分析与代数  (1)
          </option>
          <option class="level-1" value="380">
           概率论  (9)
          </option>
          <option class="level-1" value="382">
           随机过程  (5)
          </option>
          <option class="level-0" value="210">
           数据分析  (81)
          </option>
          <option class="level-1" value="203">
           多元统计  (3)
          </option>
          <option class="level-1" value="42">
           数据挖掘与机器学习  (42)
          </option>
          <option class="level-1" value="36">
           生物与医学统计  (17)
          </option>
          <option class="level-1" value="35">
           计量经济学  (4)
          </option>
          <option class="level-1" value="296">
           金融统计  (3)
          </option>
          <option class="level-1" value="303">
           风险精算  (7)
          </option>
          <option class="level-0" value="177">
           模型专题  (15)
          </option>
          <option class="level-1" value="38">
           回归分析  (10)
          </option>
          <option class="level-1" value="41">
           时间序列  (2)
          </option>
          <option class="level-0" value="784">
           每周精选  (24)
          </option>
          <option class="level-1" value="183">
           可视化  (9)
          </option>
          <option class="level-0" value="967">
           沙龙纪要  (3)
          </option>
          <option class="level-0" value="18">
           经典理论  (46)
          </option>
          <option class="level-1" value="37">
           抽样调查  (3)
          </option>
          <option class="level-1" value="4">
           统计推断  (26)
          </option>
          <option class="level-1" value="236">
           试验设计  (7)
          </option>
          <option class="level-1" value="39">
           非参数统计  (3)
          </option>
          <option class="level-0" value="1">
           统计之都  (279)
          </option>
          <option class="level-1" value="884">
           中国R会议  (2)
          </option>
          <option class="level-1" value="885">
           中国R语言会议  (5)
          </option>
          <option class="level-1" value="446">
           出国留学  (3)
          </option>
          <option class="level-1" value="179">
           推荐文章  (90)
          </option>
          <option class="level-1" value="3">
           新闻通知  (75)
          </option>
          <option class="level-1" value="263">
           统计刊物  (10)
          </option>
          <option class="level-1" value="174">
           网站导读  (40)
          </option>
          <option class="level-1" value="204">
           职业事业  (51)
          </option>
          <option class="level-1" value="213">
           高校课堂  (9)
          </option>
          <option class="level-0" value="178">
           统计计算  (28)
          </option>
          <option class="level-1" value="40">
           优化与模拟  (15)
          </option>
          <option class="level-1" value="43">
           贝叶斯方法  (6)
          </option>
          <option class="level-0" value="378">
           软件应用  (116)
          </option>
          <option class="level-1" value="44">
           统计图形  (36)
          </option>
          <option class="level-1" value="110">
           统计软件  (83)
          </option>
         </select>
        </aside>
        <aside class="widget widget_recent_comments" id="recent-comments-2">
         <h3 class="widget-title">
          最新评论
         </h3>
         <ul id="recentcomments">
          <li class="recentcomments">
           <span class="comment-author-link">
            fineboom
           </span>
           发表在《
           <a href="http://cos.name/2016/06/use-shiny-fleetly-set-up-visual-prototype-system/#comment-7317">
            利用shiny包快速搭建可视化原型系统
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            胡家新
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7316">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://www.zijiacha.com/category.php?id=6" rel="external nofollow">
             南糯山普洱茶
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7315">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            J
           </span>
           发表在《
           <a href="http://cos.name/2016/05/value-of-the-reputation-from-the-data/#comment-7314">
            数据告诉你：高信誉的卖家应该收高价，还是收低价？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://gg" rel="external nofollow">
             Hilda
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2013/01/drawing-map-in-r-era/#comment-7311">
            R时代，你要怎样画地图？
           </a>
           》
          </li>
         </ul>
        </aside>
        <aside class="widget widget_rss" id="rss-282869971">
         <h3 class="widget-title">
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           <img src="http://cos.name/wp-includes/images/rss.png"/>
          </a>
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           中文论坛新帖
          </a>
         </h3>
         <ul>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417372/">
            处理时间数据和产生时间序列的问题
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/6790/">
            《统计陷阱》下载 （How to lie with statistics）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/818/">
            统计学的世界（第五版）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/16574/">
            class(x) 返回值值是AsIs,AsIs代表什么，有什么用处？
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417366/">
            如何用R绘制一个分类算法的决策规则
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_text" id="text-2">
         <h3 class="widget-title">
          登录/RSS
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <a href="http://cos.name/wp-admin/">
             登录
            </a>
           </li>
           <li>
            <a href="http://cos.name/feed/" title="使用 RSS 2.0 同步站点内容">
             文章
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
           <li>
            <a href="http://cos.name/comments/feed/" title="RSS 上的最近评论">
             评论
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
          </ul>
         </div>
        </aside>
       </div>
       <!-- .widget-area -->
      </div>
      <!-- .sidebar-inner -->
     </div>
     <!-- #tertiary -->
    </div>
    <!-- #main -->
    <footer class="site-footer" id="colophon" role="contentinfo">
     <div class="site-info">
      版权所有 © 2014 统计之都 | 由
      <a href="http://wordpress.org/">
       WordPress
      </a>
      构建 | 主题修改自
      <a href="http://wordpress.org/themes/twentythirteen">
       Twenty Thirteen
      </a>
     </div>
     <!-- .site-info -->
    </footer>
    <!-- #colophon -->
   </div>
   <!-- #page -->
   <p style="margin:0;padding:0;height:1px;overflow:hidden;">
    <a href="http://www.wumii.com/widget/relatedItems" style="border:0;">
     <img src="http://static.wumii.cn/images/pixel.png"/>
    </a>
   </p>
  </div>
 </body>
</html>